NexusPi Git Node
Commit 522a2430bb85bcff0b618488100f3f2fb437c008
Parents : 3050d1a
Author : Chad Attermann <attermann@gmail.com>
Date : 2026-05-07T11:05:01-06:00
Updated SD card sotrage implementation
Changes
2 files changed, 68 insertions(+), 10 deletions(-)
Diff
diff --git a/RNode_Firmware.ino b/RNode_Firmware.ino
index 79a6ea8..ecfea02 100644
--- a/RNode_Firmware.ino
+++ b/RNode_Firmware.ino
@@ -177,7 +177,7 @@ void on_log(const char* msg, RNS::LogLevel level) {
#ifdef HAS_SDCARD
File file = SD.open("/logfile.txt", FILE_APPEND);
if (file) {
- file.write((uint8_t*)line.c_str(), line.length());
+ file.write((uint8_t*)msg, strlen(msg));
file.close();
}
#endif // HAS_SDCARD
@@ -193,7 +193,7 @@ void on_receive_packet(const RNS::Bytes& raw, const RNS::Interface& interface) {
file.write((uint8_t*)line.c_str(), line.length());
file.close();
}
- RNS::Packet packet({RNS::Type::NONE}, raw);
+ RNS::Packet packet(raw);
if (packet.unpack()) {
String line = RNS::getTimeString() + String(" recv: ") + String(packet.dumpString().c_str()) + "\n";
File file = SD.open("/tracedetails.txt", FILE_APPEND);
@@ -215,7 +215,7 @@ void on_transmit_packet(const RNS::Bytes& raw, const RNS::Interface& interface)
file.write((uint8_t*)line.c_str(), line.length());
file.close();
}
- RNS::Packet packet({RNS::Type::NONE}, raw);
+ RNS::Packet packet(raw);
if (packet.unpack()) {
String line = RNS::getTimeString() + String(" send: ") + String(packet.dumpString().c_str()) + "\n";
File file = SD.open("/tracedetails.txt", FILE_APPEND);
@@ -234,8 +234,8 @@ RNS::Interface lora_interface(RNS::Type::NONE);
// CBA microStore
#if MCU_VARIANT == MCU_ESP32
#if defined(USE_FLASHFS)
- #include <microStore/Adapters/FlashFileSystem.h>
- microStore::FileSystem filesystem{microStore::Adapters::FlashFileSystem()};
+ #include <microStore/Adapters/FlashFSFileSystem.h>
+ microStore::FileSystem filesystem{microStore::Adapters::FlashFSFileSystem()};
#else
//#include <microStore/Adapters/SPIFFSFileSystem.h>
//microStore::FileSystem filesystem{microStore::Adapters::SPIFFSFileSystem()};
@@ -245,9 +245,12 @@ RNS::Interface lora_interface(RNS::Type::NONE);
microStore::FileSystem filesystem{microStore::Adapters::PosixFileSystem()};
#endif
#elif MCU_VARIANT == MCU_NRF52
- #if defined(USE_FLASHFS)
- #include <microStore/Adapters/FlashFileSystem.h>
- microStore::FileSystem filesystem{microStore::Adapters::FlashFileSystem()};
+ #if defined(USE_FLASHFS) && BOARD_MODEL == BOARD_RAK4631
+ //#include <flash_devices.h>
+ //static const SPIFlash_Device_t device = GD25Q16C;
+ #include <microStore/Adapters/FlashFSFileSystem.h>
+ static const SPIFlash_Device_t device = RAK15001;
+ microStore::FileSystem filesystem{microStore::Adapters::FlashFSFileSystem(&device)};
#else
#include <microStore/Adapters/InternalFSFileSystem.h>
microStore::FileSystem filesystem{microStore::Adapters::InternalFSFileSystem()};
@@ -554,7 +557,7 @@ void setup() {
if (op_mode != MODE_TNC) LoRa->setFrequency(0);
- // CBA SD
+// CBA SD
#ifdef HAS_SDCARD
pinMode(SDCARD_MISO, INPUT_PULLUP);
SDSPI.begin(SDCARD_SCLK, SDCARD_MISO, SDCARD_MOSI, SDCARD_CS);
diff --git a/platformio.ini b/platformio.ini
index ad5a043..076d50f 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -394,6 +394,11 @@ board_build.filesystem = littlefs
build_flags =
${env.build_flags}
-DBOARD_MODEL=BOARD_LORA32_V2_1
+ -DHAS_SDCARD=1
+ -DSDCARD_SCLK=14
+ -DSDCARD_MISO=2
+ -DSDCARD_MOSI=15
+ -DSDCARD_CS=13
-DUSTORE_USE_POSIXFS=1
-DURTN_PATH_TABLE_MAX_RECS=500
-DRNS_PATH_TABLE_SEGMENT_SIZE=24576 ; 24 KB
@@ -904,9 +909,9 @@ build_flags =
-DRNS_CONTAINER_ALLOCATOR=RNS_HEAP_POOL_ALLOCATOR
-DRNS_HEAP_POOL_BUFFER_SIZE=131072
;-DRNS_HEAP_POOL_BUFFER_SIZE=65536
- ;-DUSE_FLASHFS=1
;-UHAS_RNS
-DUSTORE_USE_INTERNALFS
+ ;-DUSE_FLASHFS=1
;-DRNS_PATH_TABLE_SEGMENT_SIZE=4096
;-DRNS_PATH_TABLE_SEGMENT_COUNT=3
;-DURTN_PATH_TABLE_MAX_RECS=50
@@ -919,6 +924,56 @@ lib_deps =
microReticulum=symlink://../microReticulum
;Adafruit_SPIFlash=symlink://../Adafruit_SPIFlash
+; MCU: Nordic nRF52840 (32-bit ARM Cortex-M4, 64 MHz)
+; SRAM: 256 KB
+; PSRAM: N/A
+; Flash: 1 MB internal + 2 MB external (RAK15001)
+; External Flash Interface: YES (via SPI / QSPI on WisBlock baseboards)
+; LoRa: Semtech SX1262
+[env:wiscore_rak4631_rak15001-local]
+platform = nordicnrf52
+board = rak4630
+custom_variant = rak4631_local
+board_build.partitions = no_ota.csv
+board_build.filesystem = littlefs
+build_src_filter = ${env.build_src_filter} +<variants/rak4630>
+build_unflags =
+ ${env.build_unflags}
+ -fno-exceptions ; Required for exception handling on nordicnrf52
+ -fno-rtti ; Required for exception handling on nordicnrf52
+ --specs=nano.specs ; Required for exception handling on nordicnrf52
+build_flags =
+ ${env.build_flags}
+ -fexceptions ; Required for exception handling on nordicnrf52
+ -frtti ; Required for exception handling on nordicnrf52
+ --specs=nosys.specs ; Required for exception handling on nordicnrf52
+ ;-Wl,-Map,output.map
+ -I variants/rak4630
+ -DBOARD_MODEL=BOARD_RAK4631
+ ; CBA TEST
+ ;-DRNS_DEFAULT_ALLOCATOR=RNS_HEAP_ALLOCATOR
+ -DRNS_DEFAULT_ALLOCATOR=RNS_HEAP_POOL_ALLOCATOR
+ ;-DRNS_CONTAINER_ALLOCATOR=RNS_HEAP_ALLOCATOR
+ -DRNS_CONTAINER_ALLOCATOR=RNS_HEAP_POOL_ALLOCATOR
+ -DRNS_HEAP_POOL_BUFFER_SIZE=131072
+ ;-DRNS_HEAP_POOL_BUFFER_SIZE=65536
+ ;-UHAS_RNS
+ ;-DUSTORE_USE_INTERNALFS
+ -DUSTORE_USE_FLASHFS
+ -DUSE_FLASHFS=1
+ ;-DRNS_PATH_TABLE_SEGMENT_SIZE=4096
+ ;-DRNS_PATH_TABLE_SEGMENT_COUNT=3
+ ;-DURTN_PATH_TABLE_MAX_RECS=50
+ -DURTN_PATH_TABLE_MAX_RECS=25
+ -DRNS_PATH_TABLE_SEGMENT_SIZE=2048 ; 2 KB
+ -DRNS_PATH_TABLE_SEGMENT_COUNT=6
+lib_deps =
+ ${env.lib_deps}
+ microStore=symlink://../microStore
+ microReticulum=symlink://../microReticulum
+ ;https://github.com/attermann/Adafruit_SPIFlash#littlefs
+ Adafruit_SPIFlash=symlink://../Adafruit_SPIFlash
+
; MCU: Nordic nRF52840 (32-bit ARM Cortex-M4, 64 MHz)
; SRAM: 256 KB
; PSRAM: N/A
Served by rngit 1.5.2 - Generated in 0.02s